Various forms of network-based storage systems are known today. These forms include network attached storage (NAS), storage area networks (SANs), and others. Network storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up critical data (e.g., by data mirroring), etc.
A network-based storage system typically includes at least one storage server, which is a processing system configured to store and retrieve data on behalf of one or more client processing systems (“clients”). In the context of NAS, a storage server may be a file server, which is sometimes called a “filer”. A filer operates on behalf of one or more clients to store and manage shared files. The files may be stored in a storage subsystem that includes one or more arrays of mass storage devices, such as magnetic or optical disks or tapes, by using RAID (Redundant Array of Inexpensive Disks). Hence, the mass storage devices in each array may be organized into one or more separate RAID groups.
In a SAN context, a storage server provides clients with block-level access to stored data, rather than file-level access. Some storage servers are capable of providing clients with both file-level access and block-level access, such as certain Filers made by Network Appliance, Inc. (NetApp®) of Sunnyvale, Calif.
In file servers, data is commonly stored in logical containers called volumes, which may be identical with, or subsets of, aggregates. An “aggregate” is a logical container for a pool of storage, combining one or more physical mass storage devices (e.g., disks) or parts thereof into a single logical storage object, which contains or provides storage for one or more other logical storage objects at a higher level of abstraction (e.g., volumes). A “volume” is a set of stored data associated with a collection of mass storage devices, such as disks, which obtains its storage from (i.e., is contained within, and may be coextensive with) an aggregate, and which is managed as an independent administrative unit, such as a complete file system. A “file system” is an independently managed, self-contained, hierarchal set of data units (e.g., files, blocks or LUNs). Although a volume or file system (as those terms are used herein) may store data in the form of files, that is not always the case. That is, a volume or file system may store data in the form of other units, such as blocks or LUNs.
A storage server has the capability to create a persistent, point-in-time image (PPI) of a dataset, such as a volume or a LUN, including its metadata. This capability allows the exact state of the dataset to be restored from the PPI in the event of, for example, data corruption or accidental data deletion. The ability to restore data from a PPI provides administrators with a mechanism to revert the state of their data to a known previous point in time as captured by the PPI. An example of an implementation of a PPI is a Snapshot™ generated by SnapDrive™ or SnapManager® for Microsoft® Exchange software, both made by Network Appliance, Inc. of Sunnyvale, Calif.
A storage server may be managed by a network storage administrator (also called “administrative users” or simply “administrators”) by using a storage management console on a network, which may be a computer system that runs storage management software application specifically designed to manage a distributed storage infrastructure. Through the storage management console, the administrator may submit storage management commands to be performed by the storage server, such as creating a volume. A storage management command needs to be checked against the metadata of the storage server to determine whether the command may be performed by the storage server. A command cannot be performed if it violates data and/or structural integrity of the storage server's storage system.
Metadata of a storage server describes a storage structure of the storage server's storage system(s). Particularly, metadata of a storage server includes data identifying logical storage objects of the storage server and relationships among these logical storage objects. A logical storage object (hereinafter “storage object”) is a logical storage unit of a storage server (e.g., a volume, a LUN, a PPI). An example of relationship between two storage objects is a parent-child relationship in which one storage object contains the other storage object (e.g., directory and file, or volume and directory, etc.)
In existing implementations, a storage management application usually sends a storage management command to the storage server. If the command violates the storage server's data and/or structural integrity, the storage server sends an error message to the storage management software application. This, in turn, introduces both unnecessary network latency and unnecessary network traffic.